

#ifndef __TDA_DOCUMENTOS__
#define __TDA_DOCUMENTOS__

#include "ListaOrdenada.h"
#include <stdio.h>
#include <stdlib.h>

#define MAX_CANT_LEXICOS_POR_DOCUMENTO 50
#define MAX_LENGTH_TITULO_DOCUMENTO 30
#define MAX_LENGTH_LEXICO 30

#define DOCUMENTOS_FILE "documentos.csv"
#define DOCUMENTOS_TMP_FILE "documentos_tmp.csv"


/*

Este TDA deber� almacenar los documentos v�lidos a ser consultados y la cantidad de
consultas que se han realizado sobre los mismos. Los documentos estar�n identificados por un
valor num�rico �nico para diferenciarse entre s�. (Estos estados persisten en un archivo de
configuraci�n documentos.csv). Deber� adem�s mantener la base de Documentos en memoria
y poder persistir las actualizaciones de los mismos en el archivo. (Altas/Bajas/Modificaciones y
Consultas).
El registro del csv es:
idDocumento,t�tulo,cantidadConsultasDocumento,[l�xico1,l�xico2,..,l�xicoN]
La implementaci�n de este TDA queda a cargo del Grupo.

*/


typedef struct
{
	int idDocumento;
	char titulo[MAX_LENGTH_TITULO_DOCUMENTO];
	int cantidadConsultas;
	TListaSimpleOrdenada *listaLexicos;
} ITEM_TDA_DOCUMENTOS;


typedef struct
{
	TListaSimpleOrdenada *listaDocumentos;

} TDA_DOCUMENTOS;




int tda_docuemntos_crear(TDA_DOCUMENTOS *tdaDocumentos);
int tda_docuemntos_destruir(TDA_DOCUMENTOS *tdaDocumentos);

int tda_docuemntos_alta_desde_disco(TDA_DOCUMENTOS *tdaDocumentos,int idDocumento,char *fileName);
int tda_docuemntos_alta(TDA_DOCUMENTOS *tdaDocumentos,ITEM_TDA_DOCUMENTOS *documento);
int tda_docuemntos_baja(TDA_DOCUMENTOS *tdaDocumentos,ITEM_TDA_DOCUMENTOS *documento);
int tda_docuemntos_modificacion(TDA_DOCUMENTOS *tdaDocumentos,ITEM_TDA_DOCUMENTOS *documento);
int tda_docuemntos_consulta(TDA_DOCUMENTOS *tdaDocumentos,ITEM_TDA_DOCUMENTOS *documento);

int tda_docuemntos_crear_documento(ITEM_TDA_DOCUMENTOS *documento);
int tda_docuemntos_agregar_lexico(ITEM_TDA_DOCUMENTOS *documento,char *lexico);


int tda_docuemntos_printf(TDA_DOCUMENTOS *tdaDocumentos);


int tda_documentos_read_file(TDA_DOCUMENTOS *tdaDocumentos,FILE *pFile);
int tda_documentos_write_file(TDA_DOCUMENTOS *tdaDocumentos,FILE *pFile);


int tda_docuemntos_vacio(TDA_DOCUMENTOS *tdaDocumentos);





int fCreateLexico(void *pItem);
int fCopyLexico(void *pTo,void *pFrom);
int fCmpLexico(void *pTo,void *pFrom);
int fOrderLexico(void *pTo,void *pFrom);
int fDestroyLexico(void *pItem);
int fCopyDocumento(void *pTo,void *pFrom);
int fDestroyDocumento(void *pItem);
int fCmpDocumento(void *pTo,void *pFrom);
int fOrderDocumento(void *pTo,void *pFrom);
int fCreateDocumento(void *pItem);

#endif
